/**<P>Title:ucweb</p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2010</p>
 *<p>Company: ucweb.com</p>
 *@author chensl@ucweb.com
 *@version 
 */
package com.ucweb.pooltest.pool.base;

/**
 * @author chensl@ucweb.com
 *
 * 上午10:12:26 2014-8-28
 */
public interface IObjectPool<T> {
	/**
	 * 创建对象池
	 * @param max 指定上限大小
	 */
	public void createPool(int max);
	public T createObject();
	/**
	 * 分配资源
	 * @return
	 */
	public T allocate() ;
	/**
	 * 回收资源
	 * @param t
	 */
	public void deallocate(T t);
	/**
	 * 把对象加入到缓存队列
	 * @param t
	 */
	public void addToQueue(T t);
	/**
	 * 空闲对象大小
	 */
	public int getActiveObjectsSize();
	/**
	 * 被分配的对象数量
	 * @return
	 */
	public int getInactiveObjectsSize();
	/**
	 * 获取对象池大小
	 * @return
	 */
	public int getPoolSize();
	/**
	 * 清理超过一定时间内没活跃的对象
	 */
	public void cleanUp();
	/**
	 * 对象池释放
	 */
	public void release();
}
